package org.example.volunteerend.service;

import java.time.LocalDateTime;
import java.util.List;

import org.example.volunteerend.dto.PageResponse;
import org.example.volunteerend.dto.ProjectCreateRequest;
import org.example.volunteerend.entity.ProjectCategory;
import org.example.volunteerend.entity.VolunteerProject;
import org.springframework.web.multipart.MultipartFile;

public interface ProjectService {
    List<ProjectCategory> getAllCategories();
    
    PageResponse<VolunteerProject> getProjectList(
            Integer page, 
            Integer pageSize, 
            String keyword, 
            Integer categoryId, 
            String status, 
            LocalDateTime startTime,
            LocalDateTime endTime,
            String location,
            String sortBy,
            String sortOrder
    );
    
    VolunteerProject getProjectDetail(Integer projectId);
    
    Integer createProject(ProjectCreateRequest request, Integer organizerId);
    
    String updateProjectCover(Integer projectId, MultipartFile coverFile) throws Exception;
    
    List<String> uploadProjectImages(Integer projectId, List<MultipartFile> imageFiles) throws Exception;
    
    Integer registerProject(Integer projectId, Integer userId);
    
    void cancelRegistration(Integer projectId, Integer userId);
    
    PageResponse<?> getProjectRegistrations(Integer projectId, Integer page, Integer pageSize, String status);
    
    void updateProjectStatus(Integer projectId, String status);
} 